package partTwo;
/*本类用于测试构造方法*/
public class TestConstructor {
    public static void main(String[] args) {
        //4.创建Person类的对象进行测试
        /* 每次new（实例化）对象时，都会自动触发对应类的构造方法*/
        /* 每个类都会默认存在一个没有参数的构造方法
         *  但是，如果你提供了其他的构造函数，默认的无参构造会被覆盖
         * 所以，我们要手动的提供无参构造，这样才能不传参数，也能创建对象*/

        Person p = new Person();
        System.out.println(p.age);
        System.out.println(p.name);
        System.out.println(p.address);
        p.eat();

        //6.创建Person类的第二个对象
        /*每次创建对象时，都会执行构造方法；
         * 构造方法的作用就是用来创建对象的*/
        Person p2 = new Person();
        //7.触发含参构造
        Person p3 = new Person(88);
        //触发全参构造
        Person p4 = new  Person("张三",18,"柳树下");
        System.out.println(p4.name);
        System.out.println(p4.age);
        System.out.println(p4.address);
    }
}
//1.创造Person类，用来描述人这一事物
class Person{
    //2.属性--成员变量
    String name; //姓名
    int age;  //年龄
    String address; //住址


    /*构造方法的格式：没有返回值类型并且与类名同名的方法*/
    //5.创造本类的无参构造
    public Person(){
        System.out.println("我是Person无参构造");
    }

    //6.创建本类的含参构造
    public Person(int n){
        System.out.println("我是Person的含参构造"+n);
    }

    //8.创建本类的全参构造
    public Person(String name, int age, String address) {
        this.name = name;  //局部变量name的值赋值给this指定的成员变量name
        this.age = age;    //局部变量age的值赋值给this指定的成员变量age
        this.address = address;  //局部变量name的值赋值给address指定的成员变量address
        System.out.println("我是Person的全参构造");
    }



    //3.功能--方法
    public void eat(){
        System.out.println("干饭不积极，思想有问题");


    }
}